package ar.frba.utn.disenio.aterrizar.com.parte1;

import java.util.*;

public class Fecha {

	// atributos
	private Date fecha;

	public Fecha() {
		super();// Esto indica que cuando hacemos fecha = new Fecha, tiene que
				// ir a la superclase para crearla.
	}

	public Fecha(Date fecha) {
		this();// En cambio, si le pasamos una fecha, lo crea en este lugar y no
				// en la superclase.
		this.fecha = fecha;
	}

	// Pero la magia est´a ac´a:
	// Esto es lo que vamos a usar para crear las fechas:
	public Fecha(Parser tipo, String cadena) {
		this();
		almacenarFecha(tipo, cadena);
	}

	// Nos da la fecha con tipo Date:
	public Date getDate() {
		return this.fecha;
	}

	// Nos da la fecha en milisegundos a partir de 1970:
	public long getTime() {
		return this.fecha.getTime();
	}

	// Esto es tanto para poder hacer "new Fecha()" sin pasarle nada y m´as
	// adelante decirle la fecha que debe almacenar.
	// Tambi´en es funci´on auxiliar de "Fecha(Parser tipo, String cadena)":
	public void almacenarFecha(Parser tipo, String cadena) {
		this.fecha = tipo.convertir(cadena);

	}

	public void mostrarFecha() {
		System.out.println(this.fecha);
	}

	public boolean esAnteriorA(Fecha fecha) {
		return (this.getTime() < fecha.getTime());
	}

	public long cuantosDiasConRespectoA(Fecha fecha2) {
		long resultado = this.getTime() - fecha2.getTime();
		// Esto nos lo da en milisegundos, as´i que hay que dividirlo por la
		// Cantidad de milisegundos por d´ia (86400000):
		resultado = resultado / 86400000;

		// Ahora en valor absoluto:
		resultado = Math.abs(resultado);
		return resultado;
	}
}